home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 441 / dlibs12 / setjmp.s < prev    next >
Text File  |  1990-11-23  |  641b  |  23 lines

  1. .globl _setjmp
  2. _setjmp:
  3.     move.l    $4(sp),a0        * address of jmp_buf[]
  4.     move.l    sp,(a0)+        * save stack pointer
  5.     move.l    a6,(a0)+        * save frame pointer
  6.     move.l    (sp),(a0)+        * save return address
  7.     movem.l    d2-d7/a2-a5,(a0)    * save registers
  8.     clr.l    d0            * return value is 0
  9.     rts
  10. .globl _longjmp
  11. _longjmp:
  12.     move.l    $4(sp),a0        * address of jmp_buf[]
  13.     move.w    $8(sp),d0        * value to return
  14.     bne    nonzero
  15.     moveq.l    #1,d0            * make it non-zero
  16. nonzero:
  17.     ext.l    d0
  18.     move.l    (a0)+,sp        * restore stack pointer
  19.     move.l    (a0)+,a6        * restore frame pointer
  20.     move.l    (a0)+,(sp)        * restore return address
  21.     movem.l    (a0),d2-d7/a2-a5    * restore registers
  22.     rts
  23.